如何从TAB分隔的字符串中选择第一列?
# echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -F'\t' '{print $1}'
Run Code Online (Sandbox Code Playgroud)
以上将返回整行,而不是按预期返回"LOAD_SETTLED".
更新:
我需要更改选项卡中的第三列分隔值.以下不起作用.
echo $line | awk 'BEGIN { -v var="$mycol_new" FS = "[ \t]+" } ; { print $1 $2 var $4 $5 $6 $7 $8 $9 }' >> /pdump/temp.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果分隔符是逗号而不是制表符,则此操作会按预期工作.
echo $line | awk -v var="$mycol_new" -F'\t' '{print $1 "," $2 "," var "," $4 "," $5 "," $6 "," $7 "," $8 "," $9 "}' >> /pdump/temp.txt
Run Code Online (Sandbox Code Playgroud) 我需要编辑大量文件,方法是在唯一模式正下方或其上方插入(2)行.请告诉如何使用sed,awk,perl或shell中的任何其他内容.谢谢
some text
lorem ipsum dolor sit amet
more text
Run Code Online (Sandbox Code Playgroud)
我想在'你好我的爱,你是个肮脏的女孩'之后插入'我知道,我是,我的性感骑士',所以输出文件看起来像
some text
lorem ipsum dolor sit amet
consectetur adipiscing elit
more text
Run Code Online (Sandbox Code Playgroud) 我有一个文件-|在每个部分后都带有分隔符...需要使用unix为每个部分创建单独的文件.
输入文件的示例
wertretr
ewretrtret
1212132323
000232
-|
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
Run Code Online (Sandbox Code Playgroud)
文件1中的预期结果
wertretr
ewretrtret
1212132323
000232
-|
Run Code Online (Sandbox Code Playgroud)
文件2中的预期结果
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
Run Code Online (Sandbox Code Playgroud)
文件3中的预期结果
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
Run Code Online (Sandbox Code Playgroud) 我有一个文件,每行有很多行,有很多列(字段)用空格分隔""每行的列数不同我想删除前两列怎么样?
我的虚拟文件如下所示:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
Run Code Online (Sandbox Code Playgroud)
如果snow$ 3中有字符串,我想获取行.我可以这样做:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
Run Code Online (Sandbox Code Playgroud)
但应该有更简单的方法.
我看到可以使用proplist和-R标志(递归)和-v标志(详细)查看SVN存储库中每个目录上设置的属性列表:
svn proplist -Rv
Run Code Online (Sandbox Code Playgroud)
这显示了所有属性,例如svn:mime-type或svn:executable.我想过滤这个只是svn:ignore属性.我确信有一些方法可以通过一个shell命令来管理这个命令的结果,这个命令只能显示我感兴趣的行,但是我无法弄清楚如何去做.作为最有用的东西类型的例子是这样的某种类型的命令(但是这个不起作用!).
svn proplist -Rv | grep "^ svn:ignore" | awk "{print \$1}"
Run Code Online (Sandbox Code Playgroud)
我只是不太了解像grep和awk这样的shell命令,这对我有用.这只是一遍又一遍地显示"svn:ignore",但它不会打印出目录路径或svn:ignore属性的内容.以下是我想要获取的"svn proplist -Rv"输出的示例,其中'cache'是路径,'*'是属性的值.
Properties on 'cache':
svn:ignore
*
Run Code Online (Sandbox Code Playgroud)
如何使上述命令起作用和/或是否有更好的方法来查看svn:ignore我的存储库中的所有属性?
我想使用unix命令打印文本文件每行中的字符数.我知道powershell很简单
gc abc.txt | % {$_.length}
Run Code Online (Sandbox Code Playgroud)
但我需要unix命令.
我有两个文件(file1.txt和file2.txt),文件只是示例.
如何合并这两个文件,以便创建文件 - merge_files.txt作为示例3
我现在写的是ksh脚本,所以可以用ksh,awk,sed,perl one liner等完成合并
背景 - 为什么我需要合并文件:我的目标是将OLD文件(存在于第一个字段中)重命名为NEW文件(存在于第二个字段中),
例1
more file1.txt
/etc/port1-192.9.200.1-255.555.255.0
/etc/port2-192.9.200.1-255.555.255.0
/etc/port3-192.9.200.1-255.555.255.0
/etc/port4-192.9.200.1-255.555.255.0
/etc/port5-192.9.200.1-255.555.255.0
.
.
.
.
Run Code Online (Sandbox Code Playgroud)
例题
more file2.txt
/etc/port1-192.90.2.1-255.555.0.0
/etc/port2-192.90.2.1-255.555.0.0
/etc/port3-192.90.2.1-255.555.0.0
/etc/port4-192.90.2.1-255.555.0.0
/etc/port5-192.90.2.1-255.555.0.0
.
.
.
.
Run Code Online (Sandbox Code Playgroud)
示例3
more merge_files.txt
/etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
/etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
/etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
/etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
/etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0
.
.
.
.
.
Run Code Online (Sandbox Code Playgroud)
example4(merge_files.txt结构)
first field second field
OLD file NEW file
Run Code Online (Sandbox Code Playgroud) 我想使用shell脚本将多行插入到文件中.让我们考虑一下我的输入文件内容是: input.txt:
abcd
accd
cdef
line
web
Run Code Online (Sandbox Code Playgroud)
现在我必须在input.txt文件中的'cdef'行后插入四行.插入我的文件后应该改变如下:
abcd
accd
cdef
line1
line2
line3
line4
line
web
Run Code Online (Sandbox Code Playgroud)
我应该使用shell脚本进行上面的插入.谁能帮我?